package com.exm.collectcodenew.web.service;

import java.util.List;
import java.util.Map;
import java.util.function.Predicate;

public interface UserEnumService {
    /**
     * 获取枚举类的所有值
     */
    public <T extends Enum<T>> List<T> getAllEnums(Class<T> enumClass);
    /**
     * 获取枚举的code-desc映射
     */
    public  <T extends Enum<T>> Map<Object, String> getCodeDescMap(Class<T> enumClass);
    /**
     * 根据枚举类和code值获取枚举实例
     */
    <T extends Enum<T>> T getEnumByCode(Class<T> enumClass, Object code);

    /**
     * 根据枚举类和name获取枚举实例
     */
    <T extends Enum<T>> T getEnumByName(Class<T> enumClass, String name);

    /**
     * 根据条件过滤枚举值
     */
    <T extends Enum<T>> List<T> getEnumsByCondition(Class<T> enumClass, Predicate<T> condition);
}
